home *** CD-ROM | disk | FTP | other *** search
- /*
- OH!X5号
- GalaxyKnightsサンプル1
- 制御入力部分
- アクションマッピング非対応版
- */
-
- /* ヘッダーインクルード */
-
- #include "stdafx.h"
- #include "ohx5_1.h"
- #include <dinput.h>
-
- LPDIRECTINPUT8 lpDI=NULL; // DirectInput8オブジェクト
- LPDIRECTINPUTDEVICE8 lpDID=NULL; // DirectInput8デバイスオブジェクト
-
- // Keyboard からの入力にDirectInput を初期化
-
- bool init_input()
- {
- HRESULT hr;
- DIPROPDWORD dw;
- // DIRECTINPUT7オブジェクト確保
- hr = DirectInput8Create(hInstApp,DIRECTINPUT_VERSION,IID_IDirectInput8,(void **)&lpDI,NULL );
- if( FAILED(hr) ) return false;
-
- // DirectX8デバイスオブジェクトを、キーボードに対して用意
- hr = lpDI->CreateDevice( GUID_SysKeyboard,&lpDID,NULL );
- if( FAILED(hr) ) return false;
- hr = lpDID->SetDataFormat(&c_dfDIKeyboard );
- if( FAILED(hr) ) return false;
- hr = lpDID->SetCooperativeLevel( hwndApp,DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
- if( FAILED(hr) ) return false;
-
- // バッファ・サイズを設定
- dw.diph.dwSize = sizeof(DIPROPDWORD);
- dw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
- dw.diph.dwObj = 0;
- dw.diph.dwHow = DIPH_DEVICE;
- dw.dwData = sizeof(DIDEVICEOBJECTDATA) * 100;
- lpDID->SetProperty(DIPROP_BUFFERSIZE, (LPCDIPROPHEADER)&dw);
-
- // 入力制御開始
- lpDID->Acquire();
-
- return true;
- }
-
- // 入力キーコードから、ゲームの内部処理コードを生成
- // 何でわざわざそうするかというと、DirectInputを隠蔽するためと、
- // 入力装置がキーボード以外になってもここで差を吸収し、
- // 互換性を保つ事が出来るようにするため。
- WORD GetKeys()
- {
- BYTE keys[256];
- HRESULT hr;
- WORD ret;
- ret = 0;
- hr = lpDID->GetDeviceState(256,keys);
- if( hr == DIERR_INPUTLOST ){
- lpDID->Acquire();
- } else {
- if( keys[DIK_SPACE ] & 0x80 ){ ret |= PAD_SHOOT; }
- if( keys[DIK_LSHIFT ] & 0x80 ){ ret |= PAD_FORWARD; }
- if( keys[DIK_LCONTROL ] & 0x80 ){ ret |= PAD_CMD; }
- if( keys[DIK_Z ] & 0x80 ){ ret |= PAD_LOCK; }
- if( keys[DIK_UPARROW ] & 0x80 ){ ret |= PAD_UP; }
- if( keys[DIK_LEFTARROW ] & 0x80 ){ ret |= PAD_LEFT; }
- if( keys[DIK_RIGHTARROW] & 0x80 ){ ret |= PAD_RIGHT; }
- if( keys[DIK_DOWN ] & 0x80 ){ ret |= PAD_DOWN; }
- }
- return ret;
- }
-
- // DirectInput終了処理
- void release_input()
- {
- xRelease( lpDID );
- xRelease( lpDI );
- }
-